﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

namespace FeiYang
{
    public class 玩家怪物列表_
    {
        public static Rectangle 怪物初始位置 = Rectangle.FromLTRB(834, 551, 880, 575);
        public static Rectangle 人物初始位置 = Rectangle.FromLTRB(722, 551, 770, 575);

        public static Rectangle 怪物应在位置 = Rectangle.FromLTRB(834, 493, 880, 516);
        public static Rectangle 人物应在位置 = Rectangle.FromLTRB(722, 493, 770, 516);

        public static Rectangle 怪物列表范围 = Rectangle.FromLTRB(686, 272, 910, 521);

        public static bool 怪物列表已打开()
        {
            return 其他_.循环判断(() => 图像_.查找文字("怪物", 怪物应在位置).X != -1 &&
            图像_.查找文字("人物", 人物应在位置).X != -1, 2);
        }

        public static  bool 打开怪物列表()
        {
            if (!怪物列表已打开())
            {
                键鼠_.左键单击(915, 613);
                return 怪物列表已打开();
            }
            return true;
        }

        public static bool 关闭怪物列表()
        {
            if (怪物列表已打开())
            {
                键鼠_.左键单击(915, 613);
                return !怪物列表已打开();
            }
            return true;
        }

        public static bool 切换到人物()
        {
            var 打开 = 打开怪物列表();
            if (!打开) return false;
            键鼠_.左键单击(其他_.取中心(人物应在位置));
            其他_.延迟(其他_.时长_1000);
            return 打开;
        }

        public static bool 切换到怪物()
        {
            var 打开 = 打开怪物列表();
            if (!打开) return false;
            键鼠_.左键单击(其他_.取中心(怪物应在位置));
            其他_.延迟(其他_.时长_1000);
            return 打开;
        }

        public static bool 设置怪物列表(bool 不报错 = false)
        {
            var 已在位置 = 其他_.循环判断(() => 图像_.查找文字("怪物", 怪物应在位置).X != -1, 2, 500);
            if (已在位置) return true;

            if (其他_.循环判断(() =>
            {
                var p = 图像_.查找文字("怪物", 怪物初始位置).X != -1 && 图像_.查找文字("人物", 人物初始位置).X != -1;
                if (p) return true;
                键鼠_.左键单击(915, 614);
                其他_.延迟(其他_.时长_1000);
                return false;
            }, 3))
            {
                键鼠_.左键单击(858, 564);
                其他_.延迟(其他_.时长_400);
                键鼠_.左键按下();
                其他_.延迟(其他_.时长_100);
                键鼠_.移动鼠标(856, 506);
                其他_.延迟(其他_.时长_100);
                键鼠_.左键抬起();
                其他_.延迟(其他_.时长_2000);
                var 移动到位 = 其他_.循环判断(() => 图像_.查找文字("怪物", 怪物应在位置).X != -1);
                if (!移动到位 && !不报错) throw new Exception("未能正确设置怪物列表");
                return 移动到位;
            }
            if (!不报错) return false;
            throw new Exception("未能正确设置怪物列表");
        }
    }
}
